/**
 * @Author: lbz
 * @Date: 2019-06-03 16:46:34
 * @Last Modified by: lbz
 * @Last Modified time: 2019-10-12
 * @description 只针对table的搜索、分页, 页面上需要的对象：1.searchObj：搜索参数
 *
 */
export default {
  data () {
    return {
      // 表单数据 可在页面重写
      searchObj: {
        // merchantId: this.$store.state.user.merchantId,
        // refName: '',
        // status: -1,
        // pageIndex: 1,
        // limit: 10,
        // offset: 0
      },
      total: 0, // 总数
      resData: [], // 表格数据
      _apiFunction: null // 列表接口方法
      // _before: params => params, // Function 搜索接口之前触发 过滤参数
      // _after: params => params // Function 列表接口调用后触发，过滤返回的数据
    }
  },
  methods: {
    _search () {
      // 是否有分页参数
      if (this.searchObj.limit) {
        this.searchObj.limit = 10
        this.searchObj.offset = 0
      }
      this._getList()
      // if()
    },
    // 获取列表
    async _getList () {
      if (!this._apiFunction) return new Error('接口方法不能为空')
      console.log('total', this.total)
      // let params = this.searchObj
      // if (this._before) {
      //   params = this._before(this.searchObj)
      // }
      // console.log(this._beforeFilter(1))
      // debugger
      const res = await this._apiFunction(this._before(this.searchObj))
      if (res.data.status !== 200) return this.$Message.error(res.data.error)
      // res.data.data.forEach((item) => {
      //   console.log(JSON.parse(item.settings))
      //   if (item.settings) {
      //     Object.assign(item, JSON.parse(item.settings))
      //   }
      // })
      this.resData = this._after(res.data.data || [])
      this.total = res.data.totalCount
      // if(this)
    },
    // Function 搜索接口之前触发 过滤参数
    _before (params) {
      return params
    },
    // Function 列表接口调用后触发，过滤返回的数据
    _after (params) {
      return params
    },
    // 改变分页大小
    _handlePageSize (val) {
      this.searchObj.limit = val
      this.searchObj.offset = 0
      if (this.searchObj.pageIndex === 1) {
        this._getList()
      } else {
        this.searchObj.pageIndex = 1
      }
      // this.getShopList()
    },
    // 改变分页
    _handlePage (val) {
      this.searchObj.offset = (val - 1) * this.searchObj.limit
      this._getList()
    }
  }
}
